STM32H7 DMA,TCM(ITCM和DTCM)和Cache的理解 您所在的位置:网站首页 stm32h7 itcm STM32H7 DMA,TCM(ITCM和DTCM)和Cache的理解

STM32H7 DMA,TCM(ITCM和DTCM)和Cache的理解

2023-05-08 09:27| 来源: 网络整理| 查看: 265

1、TCM

TCM=Tightly Coupled Memory,是一种高速缓存,据说是被直接集成在CPU芯片中,ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线。是cpu内核同flash及sram之间传输指令和数据的通道,指令的取指和执行及数据的读写在性能及管理上存在差异性,因而需要予以区分。

H7携带了DTCM和ITCM,ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上的其它RAM主频都是200MHz,所以要充分发挥TCM的性能。

怎么样把代码放到ITCM中?有两种方法。一种是使用gcc特有的“属性标签”,将指定代码赋予“ITCM”属性,此时该代码会被载入ITCM中执行。还有一种方法是直接将.c源文件改成.itcm.c,此时源文件会被直接编译成在ITCM中运行的目标文件。而DTCM就方便得多了。虽然两个TCM都是可映射的,也就是说,它们的地址并非固定,但是一般会将其分别映射到固定地址。既然已经有了固定地址,那么就可以很轻松地访问了。不过,正如刚才所说的,这两块内存空间都是有特殊用途的,所以不建议直接访问。相比于ITCM来说,DTCM更加重要。因为在这块内存中,存在着一个非常重要的对象——栈。局部变量和函数调用的参数,就是靠栈进行传递的。由于DMA无法访问TCM,所以也就无法访问栈。又由于局部变量是被开辟到栈中,所以DMA也无法对局部变量进行传递。

2 Cache

Cache是集成在CPU内部的极高速的缓存。注意关键词“极高速”。一般来说,它的访问速度几乎可以媲美CPU。这就意味着,CPU在访问Cache的时候几乎不会浪费多少时间。不过,速度的提升是用容量作为代价的。Cache的容量很小。

3.DMA

DMA=Direct Memory Access。这是一种通过硬件实现的数据传输机制。简单的说,就是不在CPU的参与下完成数据的传输。DMA是一种硬件设备。这种设备的工作原理是这样的:——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求)——DMA收到CPU的消息,开始准备。此时CPU把数据源地址、数据目标地址、传输数据量、传输模式等等参数告诉它。(DMA初始化)——DMA初始化完,向CPU发送消息“借你的总线用一用,我要开始传输数据了!”(总线出借,DMA启动)——CPU收到消息后,暂时切断自己与总线的联系。DMA开始传输数据。(DMA数据)——DMA传输完数据之后,向CPU发送消息“搞定了!总线还给你。”(总线归还)——CPU说:“干得好!老将出马一个顶俩!辛苦了,你先歇着吧。”DMA设备停止。CPU该干啥干啥。由于是硬件实现的,所以DMA的速度非常快。快到什么程度呢?在DS上,尤其是数据量非常大的时候,相比于CPU当中介,效率能够提高一百万倍以上。由于DMA的速度是如此之快,所以大量的数据传输,一般都要求使用DMA。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有